Enterprise application integration (EAI) has become a central concern for improving interoperability and efficiency of enterprise software. Software applications are typically designed to address specific user goals or provide specific functionality, but are typically not designed to facilitate interaction with other applications, least of all those addressing seemingly unrelated business needs. However, with the growing reliance on software to solve various problems within organizations has come a growing need for this type of integration. Improving interoperability between applications can increase the ease of sharing data gathered or produced by multiple applications, which naturally produces an increase in the consistency of the data maintained by an organization, an increase in the amount of data accessible to each application within the organization, and as a result of both of these factors, an improvement in the utility, efficiency and reliability of enterprise software.
Many organizations utilize canonical models to facilitate EAI. In this regard, a canonical model provides a set of standardized metadata elements that reside in a propriety repository and define both the canonical form for messages that will be transmitted between applications and the transformation rules that contain mappings to the canonical model. Application development teams consume a canonical model by manually creating data contracts that are ostensibly designed to accept inbound messages conforming to the canonical model and format outbound messages that also conform to the canonical model.